package 栈;

import java.util.Stack;

/**
 * 有效的括号: 括号匹配. 经典问题: https://leetcode.cn/problems/valid-parentheses/description/
 * 栈来解决问题
 */
public class Likou20 {

    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        char[] ch = s.toCharArray();
        for (char c : ch) {
            // 遇到左括号直接就是加进栈, 没有任何要求
            if(c == '{' || c == '[' || c == '(') {
                stack.push(c);
            }else {
                // else 就是右括号了
                // 如果发现栈内没有左括号, 那就是直接不符合条件
                if(stack.isEmpty()) {
                    return false;
                    // }else if(stack.peek() != c) {
                }
                // 这里不用加 else if
                char c1 = stack.peek();
                if((c1 == '{' && c ==  '}') || (c1 == '[' && c == ']' ) || (c1 == '(' && c == ')' )) {
                    // return true;
                    stack.pop();
                }else {
                    return false;
                }
            }
        }
        // 最后还要检查是不是为空
        return stack.isEmpty();
    }

}
